// 写一个函数，输入 n ，求斐波那契（Fibonacci）数列的第 n 项（即 F(N)）。斐波那契数列的定义如下：

// F(0) = 0,   F(1) = 1
// F(N) = F(N - 1) + F(N - 2), 其中 N > 1.
// 斐波那契数列由 0 和 1 开始，之后的斐波那契数就是由之前的两数相加而得出。

// 答案需要取模 1e9+7（1000000007），如计算初始结果为：1000000008，请返回 1。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/fei-bo-na-qi-shu-lie-lcof
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。

#include<bits/stdc++.h>
using namespace std;

// 迭代/动态规划
// 执行用时：
// 0 ms
// , 在所有 C++ 提交中击败了
// 100.00%
// 的用户
// 内存消耗：
// 6.1 MB
// , 在所有 C++ 提交中击败了
// 14.16%
// 的用户

class Solution {
public:
    int fib(int n) {
        vector<long long> dp(n+1,0);
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        dp[0] =0;
        dp[1] =1;
        for(int i=2;i<n+1;i++){
            dp[i] = dp[i-2] + dp[i-1];
            dp[i] = dp[i]%1000000007;
        }
        return dp[n]%1000000007;
    }
};